package fun.ticsmyc.question.stringQuestion;

/**
 * @author Ticsmyc
 * @package fun.ticsmyc.question.stringQuestion
 * @date 2020-12-02 20:19
 */
public class 字符串转数字 {

    public static int StringToInt(String str){
        char[] s = str.toCharArray();
        if( s.length ==0) {
            return 0;
        }
        if(s[0]=='-' && (s.length==1 || s[1]=='0' )){
            //只有一个负号 或者 -0 -0xxx
            return 0;
        }

        if(s.length !=1 && s[0]=='0'){
            //正数 0打头 且不只有一位数
            return 0;
        }
        int cur =0;
        int res =0;
        boolean positive = true;
        if(s[cur] =='-'){
            positive =false;
            cur++;
        }

        //这里少一位 防止计算过程溢出
        while(cur<s.length){
            if(s[cur] >='0' && s[cur]<='9' && (res> -214748364 || res ==-214748364 && s[cur]<='8')){
                res = res *10 + ('0' - s[cur]);
                cur++;
            }else{
                return 0;
            }
        }
        if(positive && res == -2147483648){
            return 0;
        }
        return positive ? -res:res;
    }
}
